/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package newpackage;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Juan
 */
@Entity
@Table(name = "DETALLECOSTO")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Detallecosto.findAll", query = "SELECT d FROM Detallecosto d"),
    @NamedQuery(name = "Detallecosto.findByCodProceso", query = "SELECT d FROM Detallecosto d WHERE d.detallecostoPK.codProceso = :codProceso"),
    @NamedQuery(name = "Detallecosto.findByCodTipoCosto", query = "SELECT d FROM Detallecosto d WHERE d.detallecostoPK.codTipoCosto = :codTipoCosto"),
    @NamedQuery(name = "Detallecosto.findByFecha", query = "SELECT d FROM Detallecosto d WHERE d.detallecostoPK.fecha = :fecha"),
    @NamedQuery(name = "Detallecosto.findByValor", query = "SELECT d FROM Detallecosto d WHERE d.valor = :valor"),
    @NamedQuery(name = "Detallecosto.findByComentario", query = "SELECT d FROM Detallecosto d WHERE d.comentario = :comentario")})
public class Detallecosto implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected DetallecostoPK detallecostoPK;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "Valor")
    private BigDecimal valor;
    @Column(name = "Comentario")
    private String comentario;
    @JoinColumn(name = "CodTipoCosto", referencedColumnName = "CodTipoCosto", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Tipocosto tipocosto;
    @JoinColumn(name = "CodProceso", referencedColumnName = "CodProceso", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Proceso proceso;

    public Detallecosto() {
    }

    public Detallecosto(DetallecostoPK detallecostoPK) {
        this.detallecostoPK = detallecostoPK;
    }

    public Detallecosto(long codProceso, int codTipoCosto, Date fecha) {
        this.detallecostoPK = new DetallecostoPK(codProceso, codTipoCosto, fecha);
    }

    public DetallecostoPK getDetallecostoPK() {
        return detallecostoPK;
    }

    public void setDetallecostoPK(DetallecostoPK detallecostoPK) {
        this.detallecostoPK = detallecostoPK;
    }

    public BigDecimal getValor() {
        return valor;
    }

    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public Tipocosto getTipocosto() {
        return tipocosto;
    }

    public void setTipocosto(Tipocosto tipocosto) {
        this.tipocosto = tipocosto;
    }

    public Proceso getProceso() {
        return proceso;
    }

    public void setProceso(Proceso proceso) {
        this.proceso = proceso;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (detallecostoPK != null ? detallecostoPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Detallecosto)) {
            return false;
        }
        Detallecosto other = (Detallecosto) object;
        if ((this.detallecostoPK == null && other.detallecostoPK != null) || (this.detallecostoPK != null && !this.detallecostoPK.equals(other.detallecostoPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "newpackage.Detallecosto[ detallecostoPK=" + detallecostoPK + " ]";
    }
    
}
